"""
接口名称 会员管理新增接口
请求方法：POST
URL 地址： http://localhost:8080/woniusales/customer/add
传入参数 :
customername:必填，会员姓名，长度为 1-20 个字符之间。
customerphone：必填，会员手机，不能重复，纯数字，长度需为 11 位（如果不填或号码错误则会新增失败）。
childsex：必填，会员性别，只允许“男”或“女”。
childdate：必填，会员生日，为年月日格式： xxxx-xx-xx。
creditkids：非必填，母婴积分，纯数字默认为 0。
creditcloth：非必填，童装积分，纯数字默认为 0。
返回响应
add-successful：添加成功。
add-failed：添加失败。
already-added：重复添加(手机号码一样就会重复添加)。
所有的必填参数均合法，接口返回值为successful。
customerphone为空/格式非法，其他必填项均合法，接口返回值为failed。
customerphone为已注册的会员手机号，其他必填项均合法，接口返回值为already-added。
"""
import requests
import csv
import pymysql,pytest

# @pytest.fixture()
def read_csv():
    with open("customers.csv", "r", encoding="utf8") as f:
        csv_dict_reader = csv.DictReader(f, delimiter="|")
        data = list(dict(i) for i in csv_dict_reader)
        for d in data:

            # eid=2&eid2=3  --》{“eid”:2,"eid2":3}
            result = {}
            for i in d["输入数据"].split("&"):
                k, v = i.split("=")
                if v == "None":
                    v = None  # 把参数转为None
                result[k] = v
            d["输入数据"] = result  # 把输入数据转为字典
        return data


class TestAdd():
    url = "http://localhost:8080/woniusales/customer/add"
    def __init__(self):
        self.setup_db()
        login = requests.post("http://localhost:8080/woniusales/user/login",
                              {"username": "admin", "password": "admin123", "verifycode": "0000"})
        self.cookie = login.cookies

    def setup_db(self):
        cnn = pymysql.connect(host="localhost", port=3316, user="root", password="654321", charset="utf8",
                              database="woniusales")
        cur = cnn.cursor()
        cnn.begin()
        cur.execute("delete FROM customer where customerid>=15188")
        cnn.commit()
        cur.close()
        cnn.close()

    def testadd(self, islogin, method, kwargs, expect_status, expect_result):
        if islogin == "True":
            if method.upper() == "GET":
                r = requests.request(method, self.url, params=kwargs, cookies=self.cookie)
            else:
                r = requests.request(method, self.url, data=kwargs, cookies=self.cookie)
            result = r.text
            if str(r.status_code) == expect_status and result == expect_result:  # 字典套字典 可以直接比较！
                return True
            else:
                return False
        else:
            if method.upper() == "GET":
                r = requests.request(method, self.url, params=kwargs)
            else:
                r = requests.request(method, self.url, data=kwargs)
            result = r.text
            if str(r.status_code) == expect_status and result == expect_result:  # 字典套字典 可以直接比较！
                return True
            else:
                return False
if __name__ == '__main__':
    test_data = read_csv()
    # print(test_data)
    m = TestAdd()
    for t in test_data:
        result = m.testadd(t["是否登录"], t["调用方式"].upper(), t["输入数据"], t["预期状态码"], t["预期结果"])
        if result is True:
            print(t, "【 测试成功 】")
        else:
            print(t, "【 测试失败 】")
